john mcginn
Ljubljana 2026: When European Table Tennis Writes Its Own ContractIn Ljubljana these days there is no applause. No scoreboard lights up. Inside...
J1 League Matchday 9: Three Teams Within One Point, and What the Provisional Table Still HidesOn the evening of October 10, as Kashiwa Reysol closed out their match agains...
Lakshya Sen at the 2026 Asian Games: the path to gold and the cracks in the dataIn the third game of the first round at All England 2026, at 19-18, Lakshya S...
VCS 2026 Data Map: When Mid Lane No Longer Decides the GameMinute 27 of Game 3, the VCS Summer 2026 final at Phu Tho Arena, the winning...
The Blank in the Data Sheet: The Line Between Analysis and FabricationWhen the Data Sheet Returns to Zero Kuala Lumpur, Tuesday night. Tropical rai...
Three Keepers, One Goal: Vietnam's Most Pleasant HeadacheThat night, when the final whistle tore through the air, I did not look at th...
32:32.40 in Karachi: Sindh's First Gold and the 60% Gap to the WorldOn the scoreboard at NED University in Karachi, the line appeared and I read ...
Dakar 2026 Beach Volleyball Pools Confirmed: Reading the Seeding Architecture Before the Ball RollsThere is a moment in every draw ceremony that I always wait for. Not the mome...
The Warning from an Empty File: When Deep Football Analysis Becomes a Fabrication MachineThere is a moment in this profession when I learned to stay silent at the rig...
Phnom Penh Crown beat Gangwon 2-1: the low block, 36% possession and the efficiency equationIn the 78th minute, in a near-full stadium in Korea, the ball left the foot o...
Maycon's Twelve-Meter Drop: The Gap That Never Lies in the 67th MinuteI still remember that evening in São Paulo, round 23 of the 2026 Brazilian...
Data Voids: The Most Expensive Silent Failure in Sports AnalyticsOn July 12, 2026, I sat in front of a screen with a lined notebook and counte...
Jude Bellingham: When All of England Whispers His NameRostov taught me: football does not need spectators, it needs someone who kno...
Vozinha at 40: Colo-Colo signs a legend, but the contract counts every appearanceThe dawn in Ulsan never lies, and neither did the frame I stared at all night...
When a Vietnamese Swimming Record Returns an Empty FieldLast July, after a domestic final, I sat down with a 412-line results sheet a...
The Cong Viettel 0-1 CAHN: 26 Minutes a Man Up, and the Silence at Minute 90+4The final whistle at Hang Day Stadium came four minutes later than the crowd'...
Hanoi FC 2-1 CAHN: Kewell won the derby with a Plan B drawn up in the meeting roomMinute 46. The net behind Hanoi FC's goal ripples. In one corner of the stand...
FIFA ASEAN Cup 2026: Group B of Death and a Commercial Gamble Running to 2030I was sitting in a beer bar on Coco Park street in Shenzhen, watching the FIF...
Indian Badminton at the 2026 Asian Games: 20 Shuttlers, One Drop Point, and the Gaps Nobody Has Drawn YetOn the night of the men's doubles final at Hangzhou 2026, I sat in front of m...
Valkyries crush Portland Fire: A victory that reveals roster depth and the No. 1 seed raceThere is a moment at the Chase Center that the scoreboard will never fully...
J1 League Matchday 9: Three Teams Within One Point, and What the Provisional Table Still HidesOn the evening of October 10, as Kashiwa Reysol closed out their match agains...
Lakshya Sen at the 2026 Asian Games: the path to gold and the cracks in the dataIn the third game of the first round at All England 2026, at 19-18, Lakshya S...
VCS 2026 Data Map: When Mid Lane No Longer Decides the GameMinute 27 of Game 3, the VCS Summer 2026 final at Phu Tho Arena, the winning...
The Blank in the Data Sheet: The Line Between Analysis and FabricationWhen the Data Sheet Returns to Zero Kuala Lumpur, Tuesday night. Tropical rai...
Three Keepers, One Goal: Vietnam's Most Pleasant HeadacheThat night, when the final whistle tore through the air, I did not look at th...
32:32.40 in Karachi: Sindh's First Gold and the 60% Gap to the WorldOn the scoreboard at NED University in Karachi, the line appeared and I read ...
Dakar 2026 Beach Volleyball Pools Confirmed: Reading the Seeding Architecture Before the Ball RollsThere is a moment in every draw ceremony that I always wait for. Not the mome...
The Warning from an Empty File: When Deep Football Analysis Becomes a Fabrication MachineThere is a moment in this profession when I learned to stay silent at the rig...
Phnom Penh Crown beat Gangwon 2-1: the low block, 36% possession and the efficiency equationIn the 78th minute, in a near-full stadium in Korea, the ball left the foot o...
Maycon's Twelve-Meter Drop: The Gap That Never Lies in the 67th MinuteI still remember that evening in São Paulo, round 23 of the 2026 Brazilian...
Data Voids: The Most Expensive Silent Failure in Sports AnalyticsOn July 12, 2026, I sat in front of a screen with a lined notebook and counte...
Jude Bellingham: When All of England Whispers His NameRostov taught me: football does not need spectators, it needs someone who kno...
Vozinha at 40: Colo-Colo signs a legend, but the contract counts every appearanceThe dawn in Ulsan never lies, and neither did the frame I stared at all night...
When a Vietnamese Swimming Record Returns an Empty FieldLast July, after a domestic final, I sat down with a 412-line results sheet a...
The Cong Viettel 0-1 CAHN: 26 Minutes a Man Up, and the Silence at Minute 90+4The final whistle at Hang Day Stadium came four minutes later than the crowd'...
Hanoi FC 2-1 CAHN: Kewell won the derby with a Plan B drawn up in the meeting roomMinute 46. The net behind Hanoi FC's goal ripples. In one corner of the stand...
FIFA ASEAN Cup 2026: Group B of Death and a Commercial Gamble Running to 2030I was sitting in a beer bar on Coco Park street in Shenzhen, watching the FIF...
Indian Badminton at the 2026 Asian Games: 20 Shuttlers, One Drop Point, and the Gaps Nobody Has Drawn YetOn the night of the men's doubles final at Hangzhou 2026, I sat in front of m...
Valkyries crush Portland Fire: A victory that reveals roster depth and the No. 1 seed raceThere is a moment at the Chase Center that the scoreboard will never fully...
